The capacities and internal speeds of operation of mass storage devices are growing exponentially making such storage devices more complex. Accordingly, manufacturers are including powerful embedded microprocessors on these devices. Moreover, with the faster speeds at which data can and needs to be handled in the application layers read/write access to storage devices can become a bottleneck in the communications pipeline thereby affecting user experience and overall machine operations.
A traditional model for operating such devices continues to be a file system running on a host machine that communicates with the storage device using block-oriented device protocols. With capable processor firmware the storage device can optimize internal operations depending on the exact intent the host software has when initiating a high-level logical operation. However, the only conventional protocol available to firmware is the block protocol, which presents a significant impediment to providing an ability to adapt and optimize data and device operations. Consequently, firmware designers are resorting to techniques such as snooping into packets coming from the host and trying guess the intent of higher level OS software data management. This approach is fragile and suboptimal. Moreover, the rapid improvements and associated reduction in costs associated with solid state drives (SSDs) is forcing designers to take a new look at ways in which to optimize data flow in host systems.